import tkinter
#import random
import math
window=tkinter.Tk() #grafické okno
canvas=tkinter.Canvas(bg="white", width=1000, height=1000)#grafické platno
canvas.pack()
size = 3
cellSize=50
CrossTurn=True
board=[False]*(size**2)
CircleWin=False
CrossWin=False
boardCross=[False]*(size**2)
boardCircle=[False]*(size**2)
alphabet=[]
for i in range(65,200):
    alphabet.append(chr(i))
def reset(event):
    if event== None or event.char == 'r':
        global CrossTurn
        global board
        global CircleWin
        global CrossWin
        global boardCross
        global boardCircle
        CrossTurn=True
        board=[False]*(size**2)
        CircleWin=False
        CrossWin=False
        boardCross=[False]*(size**2)
        boardCircle=[False]*(size**2)
        canvas.delete("all")
        for i in range(size+1):
            canvas.create_line(cellSize,cellSize+i*cellSize,cellSize+size*cellSize,cellSize+i*cellSize)
            canvas.create_line(cellSize+i*cellSize,cellSize,cellSize+i*cellSize,cellSize+size*cellSize)

        for i in range(size):
            canvas.create_text((cellSize+cellSize/2)+i*cellSize,cellSize-cellSize/2.5, text=i+1, font="Arial " + str(math.floor(cellSize/1.3)))
            canvas.create_text(cellSize-cellSize/2.5,(cellSize+cellSize/2)+i*cellSize, text=alphabet[i], font="Arial " + str(math.floor(cellSize/1.3)))

        #canvas.create_rectangle(500,200,700,300, fill="black")
        #canvas.create_text(600,250, text="", font="Arial 20", tag="text", fill="white")
def drawCross(posX, posY):
    canvas.create_line(posX-(cellSize/2-cellSize/5),posY-(cellSize/2-cellSize/5),posX+(cellSize/2-cellSize/5),posY+(cellSize/2-cellSize/5), width=2)
    canvas.create_line(posX+(cellSize/2-cellSize/5),posY-(cellSize/2-cellSize/5),posX-(cellSize/2-cellSize/5),posY+(cellSize/2-cellSize/5), width=2)
def drawCircle(posX, posY):
    canvas.create_oval(posX-(cellSize/2-cellSize/5),posY-(cellSize/2-cellSize/5),posX+(cellSize/2-cellSize/5),posY+(cellSize/2-cellSize/5), width=2)
def mouseClick(event):
    global CrossTurn
    global board
    global CircleWin
    global CrossWin
    global boardCross
    global boardCircle
    if(not CrossWin and not CircleWin):
        for x in range(size):
            if(event.x>cellSize+x*cellSize and event.x<cellSize*2+x*cellSize):
                for i in range(size):
                    if(event.y>cellSize+i*cellSize and event.y<cellSize*2+i*cellSize and not board[i*size+x]):
                        if(CrossTurn):
                            drawCross((cellSize+cellSize/2)+x*cellSize,(cellSize+cellSize/2)+i*cellSize)
                            board[i*size+x]=True
                            boardCross[i*size+x]=True
                            CrossTurn=False
                        else:
                            drawCircle((cellSize+cellSize/2)+x*cellSize,(cellSize+cellSize/2)+i*cellSize)
                            board[i*size+x]=True
                            boardCircle[i*size+x]=True
                            CrossTurn=True
        
    #if(event.x>500 and event.x<700 and event.y>200 and event.y<300):
    #    canvas.itemconfig(tagOrId='text', text=random.choice(["Hlava", "Chvost"]))
    #CrossWins
    tmp_Counter1=0
    tmp_Counter2=0
    tmp_Counter3=0
    tmp_Counter4=0
    for x in range(size):
        for i in range(size):
            if(not boardCross[i*size+x]):
                tmp_Counter1+=1
            if(not boardCross[i+x*size]):
                tmp_Counter2+=1
            if(not boardCross[i*(size+1)]):
                tmp_Counter3+=1
            if(not boardCross[(size-1)+i*(size-1)]):
                tmp_Counter4+=1
        if(tmp_Counter1==0 or tmp_Counter2 == 0 or tmp_Counter3 == 0 or tmp_Counter4 == 0):
            CrossWin=True
        else:
            tmp_Counter1=0
            tmp_Counter2=0
            tmp_Counter3=0
            tmp_Counter4=0
        


    #CircleWins
    tmp_Counter1=0
    tmp_Counter2=0
    tmp_Counter3=0
    tmp_Counter4=0
    for x in range(size):
        for i in range(size):
            if(not boardCircle[i*size+x]):
                tmp_Counter1+=1
            if(not boardCircle[i+x*size]):
                tmp_Counter2+=1
            if(not boardCircle[i*(size+1)]):
                tmp_Counter3+=1
            if(not boardCircle[(size-1)+i*(size-1)]):
                tmp_Counter4+=1
        if(tmp_Counter1==0 or tmp_Counter2 == 0 or tmp_Counter3 == 0 or tmp_Counter4 == 0):
            CircleWin=True
        else:
            tmp_Counter1=0
            tmp_Counter2=0
            tmp_Counter3=0
            tmp_Counter4=0

    if(CircleWin):
        win("Kruh Vyhral")    
    elif(CrossWin):
        win("Krížik Vyhral")

def win(txt):
    if(size<3 or cellSize<70):
            canvas.create_text(500,200, text=txt, font="Arial 20", fill="black")
    else:
            canvas.create_rectangle(cellSize*2,cellSize*2,size*cellSize,size*cellSize, fill="black")
            canvas.create_text((size*cellSize-cellSize*2)/2+cellSize*2,(size*cellSize-cellSize*2)/2+cellSize*2, text=txt, font="Arial " + str(math.floor(size*3*cellSize/100)), fill="white")
reset(None)
canvas.bind_all("<r>", reset)
canvas.bind("<Button-1>", mouseClick)

window.mainloop()
